package com.jiayang.hhotel.util;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.DatePicker;

import com.jiayang.hhotel.R;
import com.jiayang.hhotel.app.App;
import com.jiayang.hhotel.bean.Constant;
import com.jiayang.hhotel.net.Api;
import com.jiayang.hhotel.ui.NowLiveSearchDetailsActivity;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Created by Administrator on 2017/5/16 0016.
 * 时间/日期工具类
 */

public class DateUtil {


    //获取当前系统时间 长整形
    public static long getCurrentMillionTime(){
        return System.currentTimeMillis();
    }

    /**
     * 毫秒值转换为指定格式的日期字符串
     * @param format 格式
     * @return 日期字符串
     */
    public static String MillionTime2DateTime(String format){
        if(!StringUtil.isEmpty(format)){
            Date time=new Date(getCurrentMillionTime());
            SimpleDateFormat f=new SimpleDateFormat(format);
            return f.format(time);
        }
        return "";
    }
    /**
     * 指定毫秒值转换为指定格式的日期字符串
     * @param format 格式
     * @return 日期字符串
     */
    public static String MillionTime2DateTime(long millionTimes,String format){
        if(millionTimes!=0){
            Date time=new Date(millionTimes);
            SimpleDateFormat f=new SimpleDateFormat(format);
            return f.format(time);
        }
        return "";
    }

    /**
     * 字符串日期转换为date类型对象
     * @param dateStr 字符串
     * @param dateFormat 日期格式
     * @return 日期
     */
    public static Date getDate(String dateStr,String dateFormat){
        if(StringUtil.isEmpty(dateStr)){
            return null;
        }
        Date date = null;
        SimpleDateFormat format=new SimpleDateFormat(dateFormat);

        try {
            date = format.parse(dateStr);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 日期字符串转换为毫秒值
     * @param format 日期格式
     * @param time 时间
     * @return 毫秒值
     */
    public static long DateTime2MillionTime(String format,String time){
        if(!StringUtil.isEmpty(format)){
            try {
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(new SimpleDateFormat(format).parse(time));
                return calendar.getTimeInMillis();
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return 0;
    }

    /**
     * 判断系统日期与指定日期是否是同一天
     * @param date 指定日期
     * @param format 日期格式(格式需要与制定日期格式相同)
     * @return 是否是同一天
     */
    public static boolean TimeIsEtc(String date,String format){
        if(!StringUtil.isEmpty(date)){
            if(date.equals(MillionTime2DateTime(format))){
                return true;
            }
        }
        return false;
    }
    /**
     * 判断系统日期是否小于指定日期
     * @param date 指定日期
     * @param format 日期格式(格式需要与指定日期格式相同)
     * @return 是否小于
     */
    public static boolean TimeIsLess(String date,String format){
        if(!StringUtil.isEmpty(date)){
            if(date.equals(MillionTime2DateTime(format))){//当天
                return false;
            }else{//不是当天
                if(getCurrentMillionTime() < DateTime2MillionTime(format,date)){//指定日期大于系统日期
                    return true;
                }
                return false;
            }
        }
        return false;
    }

    /**
     * 判断两个日期的先后顺序
     * @param date1 日期1
     * @param date2 日期2
     * @param format 日期格式(格式需要与指定日期格式相同)
     * @return true:date1<date2;    false:date1>date2;>date2;两个日期为同一天也返回false
     */
    public static boolean JudgeTwoDateIsEqual(String date1,String date2,String format){
        if(!StringUtil.isEmpty(date1)&&!StringUtil.isEmpty(date2)){
            if(date1.equals(date2)){//当天
                return false;
            }else{//不是当天
                if(DateTime2MillionTime(format,date1) < DateTime2MillionTime(format,date2)){
                    return true;
                }else{
                    return false;
                }
            }
        }
        return false;
    }

//    /**
//     * 判断参数日期是否在一年之内
//     * @param date 日期
//     * @param format 日期格式
//     * @return 是否在一年之内
//     */
//    public static boolean TimeIsOneYearInside(String date,String format){
//        if(StringUtil.isEmpty(date)){
//            Calendar c=Calendar.getInstance();
//            c.setTimeInMillis(DateTime2MillionTime(format,date));
//            c.set(Calendar.YEAR,+1);
//            Log.e("year",c.get(Calendar.YEAR)+"");
//        }
//        return false;
//    }

    /**
     * 初始化日期选择
     */
    public static void initDatePicker(Context context,final PickerDeterListener listener){
        Calendar c = Calendar.getInstance();
        View pickerSelect= LayoutInflater.from(context).inflate(R.layout.can_rent_room_picker_select,null);
        final DatePicker picker = (DatePicker) pickerSelect.findViewById(R.id.dp_year);
        picker.init(c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH),null);
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setView(pickerSelect);
        builder.setNegativeButton(context.getString(R.string.determine), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                int cuYear,cuMonth,cuDay;
                cuYear = picker.getYear();
                cuMonth = picker.getMonth() + 1;
                cuDay = picker.getDayOfMonth();
                String str = cuYear+"-"+ StringUtil.AddZero(cuMonth) +"-"+StringUtil.AddZero(cuDay);
//                if(DateUtil.TimeIsLess(str,"yyyy-MM-dd")||DateUtil.TimeIsEtc(str,"yyyy-MM-dd")){//选择的日期是未来时间，包括当天
//                    getP().correctionDate(Constant.LAUGUAGE_FLAG_CHINESE,preception1ListDtoBean.getRegister(),str);
//                }else{
//                    ToastUtil.Toast(NowLiveSearchDetailsActivity.this.getString(R.string.select_time_timeout),NowLiveSearchDetailsActivity.this);
//                }
                if(listener != null){
                    listener.onPicker(str);
                }
            }
        });
        builder.create();
        builder.show();
    }
    //日期选择器监听
    public interface PickerDeterListener{
        void onPicker(String date);
    }
}
